import axios from 'axios';

import { BASE_URL, TIMEOUT } from "./config";

const instance = axios.create({
  baseURL: BASE_URL,
  timeout: TIMEOUT
});

// 这个就是 给instance添加的一个拦截器 interceptors
// 这是个请求拦截 所以是request 

// use里有两个参数 一个请求参数 一个响应参数
instance.interceptors.request.use(config => {
  // 这个拦截器的作用就是 页面请求还没发送时 页面所做的一些数据参数的处理
  // 1.发送网络请求时, 在界面的中间位置显示Loading的组件

  // 2.某一些请求要求用户必须携带token, 如果没有携带, 那么直接跳转到登录页面

  // 3.params/data序列化的操作

  return config;
}, err => {

});

// 当然也可以是个响应拦截 instance.interceptors.response 
instance.interceptors.response.use(res => {
  // 这个服务器返回的真实数据
  // 我们可以在这个拦截器里做过滤数据
  return res.data;
}, err => {
  if (err && err.response) {
    switch (err.response.status) {
      case 400:
        console.log("请求错误");
        break;
      case 401:
        console.log("未授权访问");
        break;
      default:
        console.log("其他错误信息");
    }
  }
  return err;
});

export default instance;

